// jQuery(function () {
function e(e) {
    var a = o('<li id="' + e.id + '"><p class="title">' + e.name + '</p><p class="imgWrap"></p><p class="progress"><span></span></p></li>'),
        s = o('<div class="file-panel"><span class="cancel">删除</span><span class="rotateRight">向右旋转</span><span class="rotateLeft">向左旋转</span></div>').appendTo(a),
        i = a.find("p.progress span"),
        t = a.find("p.imgWrap"),
        r = o('<p class="error"></p>'),
        d = function (e) {
            switch (e) {
                case 'Q_EXCEED_NUM_LIMIT':
                    text= '最多只能上传10个！';
                    break;
                case "exceed_size":
                    text = "文件大小超出";
                    break;
                case "interrupt":
                    text = "上传暂停";
                    break;
                default:
                    text = "上传失败，请重试"
            }
            r.text(text).appendTo(a)
        };
    "invalid" === e.getStatus() ? d(e.statusText) : (t.text(""), n.makeThumb(e, function (e, a) {
        if (e) return void t.css({width:"70px",height:"70px",margin:"25px auto",background:"url('/static/admin/images/file-icons.png') no-repeat -980px"});
        var s = o('<img src="' + a + '"  >');
        t.empty().append(s)
    }, v, b), w[e.id] = [e.size, 0], e.rotation = 0), e.on("statuschange", function (t, n) {
        "progress" === n ? i.hide().width(0) : "queued" === n && (a.off("mouseenter mouseleave"), s.remove()), "error" === t || "invalid" === t ? (console.log(e.statusText), d(e.statusText), w[e.id][1] = 1) : "interrupt" === t ? d("interrupt") : "queued" === t ? w[e.id][1] = 0 : "progress" === t ? (r.remove(), i.css("display", "block")) : "complete" === t && a.append('<span class="success"></span>'), a.removeClass("state-" + n).addClass("state-" + t)
    }), a.on("mouseenter", function () {
        s.stop().animate({
            height: 30
        })
    }), a.on("mouseleave", function () {
        s.stop().animate({
            height: 0
        })
    }), s.on("click", "span", function () {
        var a, s = o(this).index();
        switch (s) {
            case 0:
                return void n.removeFile(e);
            case 1:
                e.rotation += 90;
                break;
            case 2:
                e.rotation -= 90
        }
        x ? (a = "rotate(" + e.rotation + "deg)", t.css({
            "-webkit-transform": a,
            "-mos-transform": a,
            "-o-transform": a,
            transform: a
        })) : t.css("filter", "progid:DXImageTransform.Microsoft.BasicImage(rotation=" + ~~(e.rotation / 90 % 4 + 4) % 4 + ")")
    }), a.appendTo(l)
}

function a(e) {
    var a = o("#" + e.id);
    delete w[e.id], s(), a.off().find(".file-panel").off().end().remove()
}
function s() {
    var e, a = 0,
        s = 0,
        t = f.children();
    o.each(w, function (e, i) {
        s += i[0], a += i[0] * i[1]
    }), e = s ? a / s : 0, t.eq(0).children().eq(0).text(Math.round(100 * e) + "%"), t.eq(0).css("width", Math.round(100 * e) + "%"), i()
}

function i() {
    var e, a = "";
    "ready" === k ? a = "选中" + m + "个文件，共" + WebUploader.formatSize(h) + "。" : "confirm" === k ? (e = n.getStats(), e.uploadFailNum && (a = "已成功上传" + e.successNum + "个文件，" + e.uploadFailNum + '个文件上传失败，<a class="retry" href="#">重新上传</a>失败文件或<a class="ignore" href="#">忽略</a>')) : (e = n.getStats(), a = "共" + m + "个（" + WebUploader.formatSize(h) + "），已上传" + e.successNum + "个", e.uploadFailNum && (a += "，失败" + e.uploadFailNum + "个")), p.html(a)
}

function t(e) {
    var a;
    if (e !== k) {
        switch (c.removeClass("state-" + k), c.addClass("state-" + e), k = e) {
            case "pedding":
                u.removeClass("element-invisible"), l.parent().removeClass("filled"), l.hide(), d.addClass("element-invisible"), n.refresh();
                break;
            case "ready":
                o("#filePicker2").removeClass("element-invisible"), l.parent().addClass("filled"), l.show(), d.removeClass("element-invisible"), n.refresh();
                break;
            case "uploading":
                o("#filePicker2").addClass("element-invisible"), f.show(), c.text("暂停上传");
                break;
            case "paused":
                f.show(), c.text("继续上传");
                break;
            case "confirm":
                if (f.hide(), c.text("开始上传"), a = n.getStats(), a.successNum && !a.uploadFailNum) return void t("finish");
                break;
            case "finish":
                // if(n.getStats().successNum < n.options.fileNumLimit){
                o("#filePicker2").removeClass("element-invisible");
                // }
                // if(n.getStats().successNum == n.options.fileNumLimit){
                c.addClass('disabled');
                // }
                a = n.getStats(), a.successNum ? layer.msg('上传成功',{icon:1,shade:0.1,time:2000}) : (k = "done", location.reload())
        }
        i()
    }
}
var n, o = jQuery,
    r = o("#uploader"),
    l = o('<ul class="filelist"></ul>').appendTo(r.find(".queueList")),
    d = r.find(".statusBar"),
    p = d.find(".info"),
    c = r.find(".uploadBtn"),
    u = r.find(".placeholder"),
    f = d.find(".progress").hide(),
    m = 0,
    h = 0,
    g = window.devicePixelRatio || 1,
    v = 110 * g,
    b = 110 * g,
    k = "pedding",
    w = {},
    imgArr = [],//存储上传路径
    x = function () {
        var e = document.createElement("p").style,
            a = "transition" in e || "WebkitTransition" in e || "MozTransition" in e || "msTransition" in e || "OTransition" in e;
        return e = null, a
    }();
if (!WebUploader.Uploader.support()) throw alert("Web Uploader 不支持您的浏览器！如果你使用的是IE浏览器，请尝试升级 flash 播放器"), new Error("WebUploader does not support the browser you are using.");
n = WebUploader.create({
    auto: false,// 选完文件后，是否自动上传。
    //配置压缩的图片的选项 false不压缩
    compress: {
        // width: 1600,
        // height: 1600,
        // quality: 90,// 图片质量，只有type为`image/jpeg`的时候才有效。
        // allowMagnify: false,// 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.
        // crop: false,// 是否允许裁剪。
        // preserveHeaders: true,// 是否保留头部meta信息。
        // noCompressIfLarger: false,// 如果发现压缩后文件大小比原来还大，则使用原来图片 // 此属性可能会影响图片自动纠正功能
        compressSize : 10*1024*1024,//单位字节，如果图片大小小于此值，不会采用压缩
    },
    //配置生成缩略图的选项。
    // thumb:{
    //     width: 110,
    //     height: 110,
    //     quality: 70, // 图片质量，只有type为`image/jpeg`的时候才有效。
    //     allowMagnify: true,// 是否允许放大，如果想要生成小图的时候不失真，此选项应该设置为false.
    //     crop: true, // 是否允许裁剪。
    //     type: 'image/jpeg'// 为空的话则保留原有图片格式// 否则强制转换成指定的类型。
    // },
    pick: {
        id: "#filePicker",// 选择文件的按钮
        multiple: true,//true多文件上传 false单文件上传
        label: "点击选择文件"
    },
    prepareNextFile:false,//上传开始后是否准备下一个文件，准备下一个文件会加快上传速度
    dnd: "#uploader .queueList",
    duplicate :false,// 重复上传文件片，true为可重复false为不可重复
    paste: document.body,
    accept: {
        title: "Video",
        extensions: "mp4,rmvb,mkv,wmv,avi,mp3,wma,zip",//允许的文件后缀
        mimeTypes: '.mp4,.rmvb,.mkv,.wmv,.avi,.mp3,.wma,.zip'//允许的文件后缀
    },
    swf: "/static/admin/webupload/Uploader.swf",// swf文件路径
    disableGlobalDnd: !0,
    chunked: true,// 分片上传大文件
    chunkRetry: 1, // 如果某个分片由于网络问题出错，允许自动重传多少次？
    chunkSize: 5 * 1024 * 1024,
    // formData:{guid:GUID},
    // thread: 100,// 最大上传并发数
    // method: 'POST',
    server: "/admin/Upload/video",// 文件接收服务端。
    fileNumLimit: 10,//限制上传个数
    // fileSizeLimit: 100* 1024 * 1024,// 总上传限制大小
    fileSingleSizeLimit: 3000*1024*1024, //限制上传单个文件大小，单位是B，1M=1024000B
}), n.addButton({
    id: "#filePicker2",
    multiple: true,//true多文件上传 false单文件上传
    label: "继续添加"
}), n.onUploadProgress = function (e, a) {
    var i = o("#" + e.id),
        t = i.find(".progress span");
    t.css("width", 100 * a + "%"), w[e.id][1] = a, s()
}, n.onFileQueued = function (a) { //文件加入队列触发
    // canvas = document.getElementById("canvas");
    // imgWrap = document.getElementById("imgWrap");
    // canvas.getContext('2d').drawImage(video, 0, 0, '110px', '110px');
    // var img = document.createElement("img");
    // img.src = canvas.toDataURL("image/png");
    // imgWrap.appendChild(img);
    m++, h += a.size, 1 === m && (u.addClass("element-invisible"), d.show()), e(a), t("ready"), s();
    // if(m == n.options.fileNumLimit){
    //     o("#filePicker2").addClass("element-invisible");
    // }
    c.removeClass('disabled');
}, n.onFileDequeued = function (e) {//删除队列文件触发
    m--, h -= e.size, m || t("pedding"), a(e), s()
    // if(m < n.options.fileNumLimit){
    //     o("#filePicker2").removeClass("element-invisible");
    // }
}, n.on("all", function (e) {
    switch (e) {
        case "uploadFinished":
            t("confirm");
            break;
        case "startUpload":
            t("uploading");
            break;
        case "stopUpload":
            t("paused")
    }
}),n.on( 'uploadSuccess', function( e,d ) {
    imgArr.push(d._raw);//返回的图片地址存入imgArr
    // console.log(e);
    $("#photo").val(imgArr);
    var a = o("#" + e.id);
    //删除图片按钮
    a.append('<div ><span class="close-upimg" onclick="imgDel(this)" value="'+d._raw+'"><i class="fa fa-times-circle"></i></span></div>');
}), n.onError = function (e) {
    // alert(e);
    var err = '';
    switch (e) {
        case 'F_EXCEED_SIZE':
            err += '单个文件大小不得超过'+  n.options.fileSingleSizeLimit/1024/1024 + 'MB！';
            break;
        case 'Q_EXCEED_NUM_LIMIT':
            err += '最多只能上传'+  n.options.fileNumLimit +'个！';
            break;
        case 'Q_EXCEED_SIZE_LIMIT':
            err += '上传文件总大小超出'+ n.options.fileSizeLimit/1024/1024 +'MB！';
            break;
        case 'Q_TYPE_DENIED':
            err += '无效文件类型，请上传正确的文件格式！';
            break;
        case 'F_DUPLICATE':
            err += '文件不能重复上传！';
            break;
        default:
            err += '上传错误，请刷新！';
            break;
    }
    layer.msg( err,{icon:2,shade:0.1,time:2000});
}, c.on("click", function () {
    return o(this).hasClass("disabled") ? !1 : void("ready" === k ? n.upload() : "paused" === k ? n.upload() : "uploading" === k && n.stop(true))
}), p.on("click", ".retry", function () {
    n.retry() //重新上传
}), p.on("click", ".ignore", function () {
    o("#filePicker2").removeClass("element-invisible");
    //清除上传失败文件
    $.each(n.getFiles('error'),function(index,item){
        // console.log(item);
        $('#'+item.id).parents('li').remove();
        n.removeFile(item, true);//删除队列的文件
    })
}), c.addClass("state-" + k), s();

//删除上传成功的文件
function imgDel(e){
    layer.confirm('确认删除此文件吗?', {icon: 3, title:'提示'}, function(index) {
        // alert( $("#photo").val());
        var add = $(e).attr('value');
        var id = $(e).parents('li').attr('id');
        //删除imgArr中的元素
        for (var i = 0; i < imgArr.length; i++) {
            if (imgArr[i] == add) {
                imgArr.splice(i, 1);
                break;
            }
        }
        $("#photo").val(imgArr);
        // alert( $("#photo").val());
        // console.log(n.getStats().numOfQueue);return;
        $.ajax({
            url: "/admin/Upload/deleteFile",
            data: 'add=' + add,
            type: 'post',
            dataType: 'json',
            success: function (res) {
                if (res.code == 200) {
                    $(e).parents('li').remove();
                    n.removeFile(id, true);//删除队列的文件
                    // console.log(n.getFiles().length);
                } else {
                    layer.msg('删除失败，请重试...', {icon: 2, shade: 0.1, time: 2000})
                }
            }
        })
        layer.close(index);
    });
}
// });